package com.ibs.hadoop.hbase.bean;

import com.ibs.hadoop.hbase.util.PropertiesUtils;

/**
 * 数据查询所使用的bean
* 源文件名：QueryBean.java
* 文件版本：1.0.0
* 创建作者：liujun
* 创建日期：2016年10月27日
* 修改作者：liujun
* 修改日期：2016年10月27日
* 文件描述：liujun
* 版权所有：Copyright 2016 zjhz, Inc. All Rights Reserved.
*/
public class QueryBean {

    /**
     * imsi
    * @字段说明 imsi
    */
    private String imsi;

    /**
     * 开始时间
    * @字段说明 startTime
    */
    private String startTime;

    /**
     * 结束时间
    * @字段说明 endTime
    */
    private String endTime;

    public String getImsi() {
        return imsi;
    }

    public void setImsi(String imsi) {
        this.imsi = imsi;
    }

    public String getStartTime() {
        return startTime;
    }

    public void setStartTime(String startTime) {
        this.startTime = startTime;
    }

    public String getEndTime() {
        return endTime;
    }

    public void setEndTime(String endTime) {
        this.endTime = endTime;
    }

    public String getStartRowKey() {
        StringBuilder imsiBuilder = new StringBuilder();
        imsiBuilder.append(imsi);
        imsiBuilder.reverse();

        StringBuilder rowKey = new StringBuilder();
        // 添加imsi
        rowKey.append(imsiBuilder.toString());
        // 添加开始时间
        // 测试的时间
        if ("true".equals(PropertiesUtils.getInstance().getValue("user.complaint.settime.flag"))) {
            rowKey.append(PropertiesUtils.getInstance().getValue("user.complaint.startTime"));
        } else {
            rowKey.append(startTime);
        }
        // 添加随机数6位
        rowKey.append("000000");

        return rowKey.toString();
    }

    public String getEndRowKey() {
        StringBuilder imsiBuilder = new StringBuilder();
        imsiBuilder.append(imsi);
        imsiBuilder.reverse();

        StringBuilder rowKey = new StringBuilder();
        // 添加imsi
        rowKey.append(imsiBuilder.toString());
        // 添加开始时间
        if ("true".equals(PropertiesUtils.getInstance().getValue("user.complaint.settime.flag"))) {
            rowKey.append(PropertiesUtils.getInstance().getValue("user.complaint.endTime"));
        } else {
            rowKey.append(endTime);
        }
        // 添加随机数6位
        rowKey.append("999999");

        return rowKey.toString();
    }

    /**
     * 获取时间
    * 方法描述
    * @return
    * @创建日期 2016年10月31日
    */
    public String getTableTime() {
        return this.startTime.substring(2, 8);
    }

    @Override
    public String toString() {
        StringBuilder builder = new StringBuilder();
        builder.append("QueryBean [imsi=");
        builder.append(imsi);
        builder.append(", startTime=");
        builder.append(startTime);
        builder.append(", endTime=");
        builder.append(endTime);
        builder.append("]");
        return builder.toString();
    }

    @Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result + ((endTime == null) ? 0 : endTime.hashCode());
        result = prime * result + ((imsi == null) ? 0 : imsi.hashCode());
        result = prime * result + ((startTime == null) ? 0 : startTime.hashCode());
        return result;
    }

    @Override
    public boolean equals(Object obj) {
        if (this == obj)
            return true;
        if (obj == null)
            return false;
        if (getClass() != obj.getClass())
            return false;
        QueryBean other = (QueryBean) obj;
        if (endTime == null) {
            if (other.endTime != null)
                return false;
        } else if (!endTime.equals(other.endTime))
            return false;
        if (imsi == null) {
            if (other.imsi != null)
                return false;
        } else if (!imsi.equals(other.imsi))
            return false;
        if (startTime == null) {
            if (other.startTime != null)
                return false;
        } else if (!startTime.equals(other.startTime))
            return false;
        return true;
    }

    public static void main(String[] args) {

        QueryBean qb1 = new QueryBean();
        qb1.setImsi("imsi");
        qb1.setStartTime("2016");
        qb1.setEndTime("2017");

        QueryBean qb2 = new QueryBean();
        qb2.setImsi("imsi");
        qb2.setStartTime("2016");
        qb2.setEndTime("2017");

        System.out.println(qb1.equals(qb2));

    }

}
